package com.itany.corejava.code07_常用类.string;

import java.util.Scanner;

/**
 * @author MissChen
 * @date 2024年02月29日 16:52
 */
public class Test12_练习 {
    private static Scanner sc=new Scanner(System.in);

    public static void main(String[] args) {
        // checkPersonId();
        // checkEmail();
        checkUsername();
    }
    /*在控制台输入一个身份证号码，判断身份证号码格式是否正确
    身份证号只能是15位或者18位字符
    如果是15位，要求必须全部是数字
    如果是18位，要求前17位必须全部是数字，最后一位可能是数字或者X
    身份证号不能以0开头
    */
    public static void checkPersonId(){
        System.out.print("请输入一个邮箱:");
        String personId=sc.next();
        if(personId.matches("[1-9]\\d{14}(\\d{2}[0-9X])?")){
            System.out.println("身份证号码格式正确");
        }else{
            System.out.println("身份证号码格式不正确，请重新输入");
            checkPersonId();
        }
    }


    /*在控制台输入一个电子邮箱，判断电子邮箱格式是否正确
    要求邮箱必须是以英文字母开头或者数字开头，后面可以跟数字、英文字母或者下划线至少一位
    然后后面跟@符号，@符号后面跟英文字母或者数字或者下划线，至少一位
    以.com或者.com.cn结尾
    */
    public static void checkEmail(){
        System.out.print("请输入一个身份证号码:");
        String email=sc.next();
        if(email.matches("[0-9a-zA-Z]\\w+@\\w+\\.com(\\.cn)?")){
            System.out.println("邮箱格式正确");
        }else{
            System.out.println("邮箱格式不正确，请重新输入");
            checkEmail();
        }
    }

    /*在控制台输入一个用户名，判断用户名格式是否正确
    用户名可以由字母、数字、下划线、点、横线组成，只能以数字或者字母开头和结尾，长度5-18位
    */
    public static void checkUsername(){
        System.out.print("请输入一个用户名:");
        String username=sc.next();

        if(username.matches("[0-9a-zA-Z][0-9a-zA-Z_.-]{3,16}[0-9a-zA-Z]")){
            System.out.println("用户名格式正确");
        }else{
            System.out.println("用户名格式不正确，请重新输入");
            checkUsername();
        }
    }





}
